### Демонстрация проекта

- [Ссылка на видео-демонстрацию проекта за 5 и 6 спринт](https://disk.yandex.ru/i/HC82x2siFWV9LQ)
- [Ссылка на видео-демонстрацию проекта за 7 и 8 спринт](https://disk.yandex.ru/i/7wwh-6SfH7UwYQ)

### Документация игры
- [Ссылка на документацию по игре "3 в ряд"](GAMEDOC.md)

### Запуск client

1. Убедитесь что у вас установлен `node` и `docker`
2. Выполните команду `yarn bootstrap` - это обязательный шаг, без него ничего работать не будет :)
3. `yarn dev --scope=client`

### Запуск server

1. В папке **package/client** выполнить - `yarn link`
2. В папке **package/server** выполнить - `yarn link "client"`
3. Выполните команду `yarn build:ssr` (в этой и дальше команде выполняем из корня проекта)
4. Выполните команду `yarn build`
5. В первом терминале запустить `docker compose up` - бдшка
6. Во втором терминале уже проект `yarn dev --scope=server`

#### Опционально:

1. Выполните команду `yarn dev --scope=client` чтобы запустить только клиент
2. Выполните команду `yarn dev --scope=server` чтобы запустить только server

### Как добавить зависимости?
В этом проекте используется `monorepo` на основе [`lerna`](https://github.com/lerna/lerna)

Чтобы добавить зависимость для клиента 
```yarn lerna add {your_dep} --scope client```

Для сервера
```yarn lerna add {your_dep} --scope server```

И для клиента и для сервера
```yarn lerna add {your_dep}```


Если вы хотите добавить dev зависимость, проделайте то же самое, но с флагом `dev`
```yarn lerna add {your_dep} --dev --scope server```


### Тесты

Для клиента используется [`react-testing-library`](https://testing-library.com/docs/react-testing-library/intro/)

```yarn test```

### Линтинг

```yarn lint```

### Форматирование prettier

```yarn format```

### Production build

```yarn build```

И чтобы посмотреть что получилось


`yarn preview --scope client`
`yarn preview --scope server`

## Хуки
В проекте используется [lefthook](https://github.com/evilmartians/lefthook)
Если очень-очень нужно пропустить проверки, используйте `--no-verify` (но не злоупотребляйте :)

## Ой, ничего не работает :(

Откройте issue, я приду :)

## Автодеплой статики на vercel
Зарегистрируйте аккаунт на [vercel](https://vercel.com/)
Следуйте [инструкции](https://vitejs.dev/guide/static-deploy.html#vercel-for-git)
В качестве `root directory` укажите `packages/client`

Все ваши PR будут автоматически деплоиться на vercel. URL вам предоставит деплоящий бот

## Production окружение в докере
Перед первым запуском выполните `node init.js`


`docker compose up` - запустит три сервиса
1. nginx, раздающий клиентскую статику (client)
2. node, ваш сервер (server)
3. postgres, вашу базу данных (postgres)

Если вам понадобится только один сервис, просто уточните какой в команде
`docker compose up {sevice_name}`, например `docker compose up server`
